home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / var / lib / dpkg / info / ca-certificates-java.postinst < prev    next >
Encoding:
Text File  |  2010-04-11  |  3.3 KB  |  134 lines

  1. #!/bin/bash
  2.  
  3. set -e
  4.  
  5. KEYSTORE=/etc/ssl/certs/java/cacerts
  6.  
  7. storepass='changeit'
  8. if [ -f /etc/default/cacerts ]; then
  9.     . /etc/default/cacerts
  10. fi
  11.  
  12. setup_path()
  13. {
  14.     for jvm in java-6-openjdk java-6-sun; do
  15.     if [ -x /usr/lib/jvm/$jvm/bin/keytool ]; then
  16.         break
  17.     fi
  18.     done
  19.     export JAVA_HOME=/usr/lib/jvm/$jvm
  20.     PATH=$JAVA_HOME/bin:$PATH
  21. }
  22.  
  23. first_install()
  24. {
  25.     cacertdir=/usr/share/ca-certificates
  26.     log=$(tempfile)
  27.  
  28.     # aliases of pregenerated files
  29.     pregenerated=$(tempfile)
  30.     LANG=C LC_ALL=C keytool -list -keystore $KEYSTORE -storepass "$storepass" \
  31.     | awk -F, '/^Certificate fingerprint/ { print s } { s=$1 } ' \
  32.     | sort > $pregenerated
  33.  
  34.     grep -v -E '^ *$|^#' /etc/ca-certificates.conf | ( \
  35.     errors=0
  36.     while read line; do
  37.     pem=${line#!*}
  38.     alias=$(basename $pem .crt | tr A-Z a-z | tr -cs a-z0-9 _)
  39.     alias=${alias%*_}
  40.     case "$line" in
  41.         !*)
  42.             # remove untrusted certificate
  43.         if LANG=C LC_ALL=C keytool -delete -keystore $KEYSTORE \
  44.             -storepass "$storepass" -alias "$alias" >/dev/null
  45.         then
  46.             echo "  removed untrusted certificate $pem"
  47.         else
  48.             # not (anymore) in keystore
  49.             :
  50.         fi;;
  51.         *)
  52.             # add certificate not yet in keystore
  53.         if [ ! -f "$cacertdir/$pem" ]; then
  54.             echo >&2 "warning: /etc/ca-certificates.conf lists $pem,"
  55.             echo >&2 "warning:   but $cacertdir/$pem does not exist."
  56.             continue
  57.         fi
  58.         if ! grep -q "^${alias}$" $pregenerated; then
  59.           if LANG=C LC_ALL=C keytool -importcert -trustcacerts -keystore $KEYSTORE \
  60.             -noprompt -storepass "$storepass" \
  61.             -alias "$alias" -file "$cacertdir/$pem" > $log 2>&1
  62.           then
  63.               echo "  added certificate $pem"
  64.           elif LANG=C LC_ALL=C keytool -importcert -trustcacerts -keystore $KEYSTORE \
  65.                 -providerClass sun.security.pkcs11.SunPKCS11 \
  66.                 -providerArg '${java.home}/lib/security/nss.cfg' \
  67.             -noprompt -storepass "$storepass" \
  68.             -alias "$alias" -file "$cacertdir/$pem" > $log 2>&1
  69.           then
  70.               echo "  added certificate $pem (using NSS provider)"
  71.           elif grep -q 'Signature not available' $log; then
  72.               echo "  ignored import, signature not available: ${line#+*}"
  73.               sed -e 's/^/   -> /' $log
  74.           else
  75.               echo >&2 "  error adding ${line#+*}"
  76.               errors=$(expr $errors + 1)
  77.           fi
  78.         fi
  79.     esac
  80.     done
  81.     rm -f $log
  82.     rm -f $pregenerated
  83.     if [ $errors -gt 0 ]; then
  84.     echo >&2 "failed (VM used: $jvm)."
  85.     [ -z "$temp_jvm_cfg" ] || rm -f $temp_jvm_cfg
  86.     exit 1
  87.     fi
  88.     echo "done."
  89.     )
  90. }
  91.  
  92. case "$1" in
  93.     configure)
  94.         if [ -z "$2" ]; then
  95.         setup_path
  96.  
  97.         if ! mountpoint -q /proc; then
  98.         echo >&2 "the keytool command requires a mounted proc fs (/proc)."
  99.         exit 1
  100.         fi
  101.  
  102.         if [ ! -f /etc/$jvm/jvm.cfg ]; then
  103.         # the jre is not yet configured, but jvm.cfg is needed to run it
  104.         temp_jvm_cfg=/etc/$jvm/jvm.cfg
  105.         mkdir -p /etc/$jvm
  106.         printf -- "-server KNOWN\n" > $temp_jvm_cfg
  107.         fi
  108.  
  109.         # on first install, remove certs untrusted by the
  110.         # user/admininstrator, add locally added certs
  111.         echo "creating $KEYSTORE..."
  112.         cp /usr/share/ca-certificates-java/cacerts $KEYSTORE
  113.         first_install
  114.  
  115.         [ -z "$temp_jvm_cfg" ] || rm -f $temp_jvm_cfg
  116.     fi
  117.     chmod 600 /etc/default/cacerts || true
  118.     ;;
  119.  
  120.     abort-upgrade|abort-remove|abort-deconfigure)
  121.     ;;
  122.  
  123.     *)
  124.         echo "postinst called with unknown argument \`$1'" >&2
  125.         exit 1
  126.     ;;
  127. esac
  128.  
  129.  
  130.  
  131. exit 0
  132.  
  133.  
  134.